package schema

import "errors"

// Notice 通知发布
type Notice struct {
	ID               int64    `bson:"_id"`                //	唯一标识(自增ID)
	RecordID         string   `bson:"record_id"`          //	记录内码(uuid)
	NoticeTitle      string   `bson:"notice_title"`       //	通知标题
	ReceiveGroupType int      `bson:"receive_group_type"` //	目标群体类型
	ReceiveGroup     []string `bson:"receive_group"`      //	通知对象
	NoticeMode       int      `bson:"notice_mode"`        //	通知方式:1->推送通知2->短信通知,3->推送通知+短信通知
	NoticeContent    string   `bson:"notice_content"`     //	通知内容
	NoticeSender     string   `bson:"notice_sender"`      //	发送人
	SendTime         int64    `bson:"send_time"`          //	发送时间
	Status           int      `bson:"status"`             //	状态:1->编辑中(暂存)2->已发送3->已删除
	Creator          string   `bson:"creator"`            // 	创建人
	Created          int64    `bson:"created"`            // 	创建时间戳
	Deleted          int64    `bson:"deleted"`            // 	删除时间戳
}

//	目标群体类型(1->所有企业管理员2->所有用户
// 3->所有游客4->所有未认证用户
// 5->所有认证用户6->指定企业管理员
// 7->指定企业全员8->指定用户)

// NoticeCParams 通知创建参数
type NoticeCParams struct {
	NoticeTitle      string   `json:"notice_title"`       //	通知标题
	ReceiveGroupType int      `json:"receive_group_type"` //	目标群体类型
	ReceiveGroup     []string `json:"receive_group"`      //	通知对象
	NoticeMode       int      `json:"notice_mode"`        //	通知方式
	NoticeContent    string   `json:"notice_content"`     //	通知内容
	MessageFrequency int      `json:"message_frequency"`  //	发送次数
}

// Validate 参数校验方法
func (a *NoticeCParams) Validate() error {
	return nil
}

// NoticeQParams 通知查询参数
type NoticeQParams struct {
	NoticeTitle      string   `json:"notice_title"`       //	通知标题
	ReceiveGroupType int      `json:"receive_group_type"` //	目标群体类型
	ReceiveGroup     []string `json:"receive_group"`      //	通知对象
	PushMode         int      `json:"push_mode"`          //	是否推送形式:0->全部1->是2->否
	MessageMode      int      `json:"message_mode"`       //	是否短信形式:0->全部1->是2->否
	NoticeContent    string   `json:"notice_content"`     //	通知内容
	Status           int      `json:"status"`             //	状态:1->编辑中(暂存)2->已发送3->已删除
	StartTime        int64    `json:"start_time"`         //	开始时间
	EndTime          int64    `json:"end_time"`           //	结束时间
}

// NoticeUParams 通知更新参数
type NoticeUParams struct {
	NoticeCParams
	RecordID string `json:"record_id"` //	记录id
}

// Validate 参数校验方法
func (a *NoticeUParams) Validate() error {
	if a.RecordID == "" {
		return errors.New("record_id参数不能为空")
	}
	return nil
}
